package com.android.scanner.demo;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;

public class Update extends Activity
{
	public ProgressDialog pBar;
	private Handler handler = new Handler();

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		//setContentView(R.layout.login);
		
		Intent intent = getIntent();
		final String apkPath = intent.getStringExtra("apkPath");
		
		
		Dialog dialog = new AlertDialog.Builder(Update.this)
				.setTitle("Application Upgrade")
				.setMessage("A new version can be installed! Please Update!")
				.setPositiveButton("Confirm",
						new DialogInterface.OnClickListener()
						{
							public void onClick(DialogInterface dialog,
									int which)
							{
								pBar = new ProgressDialog(Update.this);
								pBar.setTitle("Downloading");
								pBar.setMessage("Waiting");
								pBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);
								downFile(apkPath);
								
								/*Intent intent = new Intent();
								intent.setClass(Update.this, Login.class);
								Update.this.startActivity(intent);  */
							}
						})
				.setNegativeButton("Cancel",
						new DialogInterface.OnClickListener()
						{
							public void onClick(DialogInterface dialog,
									int which)
							{
								 Intent intent = new Intent();
								 intent.setClass(Update.this, Login.class);
								 Update.this.startActivity(intent);  
								 Update.this.finish();
							}
						}).create();
		dialog.show();
		
	
	}

	void downFile(final String url)
	{
		pBar.show();
		new Thread()
		{
			public void run()
			{
				HttpClient client = new DefaultHttpClient();
				HttpGet get = new HttpGet(url);
				HttpResponse response;
				try
				{
					response = client.execute(get);
					HttpEntity entity = response.getEntity();
					long length = entity.getContentLength();
					InputStream is = entity.getContent();
					FileOutputStream fileOutputStream = null;
					if (is != null)
					{

						File file = new File(
								Environment.getExternalStorageDirectory(),
								"ScanDemo.apk");
						fileOutputStream = new FileOutputStream(file);

						byte[] buf = new byte[1024];
						int ch = -1;
						int count = 0;
						while ((ch = is.read(buf)) != -1)
						{
							// baos.write(buf, 0, ch);
							fileOutputStream.write(buf, 0, ch);
							count += ch;
							if (length > 0)
							{

							}

						}

					}
					fileOutputStream.flush();
					if (fileOutputStream != null)
					{
						fileOutputStream.close();
					}
					down();
				} catch (Exception e)
				{
					// TODO: handle exception
				}

			};
		}.start();

	}

	void down()
	{
		handler.post(new Runnable()
		{
			public void run()
			{
				pBar.cancel();
				update();
			}
		});
	}

	void update()
	{
		Intent intent = new Intent(Intent.ACTION_VIEW);
		intent.setDataAndType(Uri.fromFile(new File("/sdcard/ScanDemo.apk")),
				"application/vnd.android.package-archive");
		startActivity(intent);
	}

}